The existing Automated Teller Machines (ATM) architecture has a tightly coupled relationship between the host Personal Computer (PC) and the attached peripheral devices. Such that, when the host PC software is changed (updated, patched, replaced) substantial retesting and redevelopment is needed to ensure that access to the attached peripheral devices are not impacted. Similarly, when hardware modules are revised or swapped out for new modules, substantial retesting and redevelopment is needed to ensure proper access to the attached peripheral devices.
This can be particularly problematic to ATM vendors because access and confirmed access to peripheral devices are vital, such as a currency dispenser or an encrypted Personal Identification Number (PIN) pad where proper and confirmed access are vital to operation of the ATM. Moreover, the core ATM application includes a variety of security measures and high-availability (HA) coding measures that have been extensively tested and retested and passed through a variety of quality assurance measures; some of which may be required for governmental compliance.
Many ATM vendors wait for long periods of time before updating to current Operating Systems (OSs) because such upgrades require a substantial amount of software engineering to ensure that the core ATM application and the attached peripheral devices continue to operate as expected. In recent years, some OS vendors have forced the switch over to newer OSs by refusing to provide any patches or support for earlier versions of the vendors' OSs. In some cases, the ATM vendors may pay the OS vendor a substantial amount of money to have an OS version maintained until the ATM vendors can successfully migrate to a newer OS version.
The same problems arise when peripheral manufactures upgrade firmware or replace hardware. The ATM vendors are slow to perform the upgrades or replace the hardware and in many cases may forgo the changes altogether if they can sustain such a situation.
In short, the ATM application environment is highly coupled and dependent on both the underlying peripheral hardware and the OS environment.